###Exercicio 6


#1. - Crie seus dados

    *Crie dois conjuntos de dados:

A. Dez observaes de uma amostra de uma distribuio normal com mdia 6 e desvio padro 3

B. Idem para uma distribuio normal com mdia 7.5 e desvio padro 3.2


> dados = data.frame(c(rep(NA,10)),c(rep(NA,10)))
> 
> for(i in 1:1)
+ 	{
+ 	dados[,i] = rnorm(10,mean = 6, sd = 3)
+ 	dados[,i+1] = rnorm(10,mean = 7.5, sd = 3.2)
+ 	}
> names(dados) = c("A","B")
> dados
           A          B
1   1.651109 10.9499050
2   7.957656  0.2897166
3   7.436934  7.0553977
4   8.557766  7.2341411
5   2.518030  7.3013053
6   3.658450 13.5529526
7   4.184556  2.5290620
8   9.220436 12.6169861
9  -2.238932  3.6718468
10 13.705996  6.3459437



DICA: utilize a funo rnorm()

#1.1 - Utilize a funo simula.r e teste a hiptese que as mdias das amostras so diferentes. No esquea de usar a funo source() para carregar a funo!
   
> ##Medias das amostras diferentes so diferentes ?
> 
> source("simula.r")
> 
> hist(dados$A, freq=FALSE)
> hist(dados$B, freq=FALSE)
> mean.A = mean(dados$A)
> mean.B = mean(dados$B)
> 
> dif=abs(mean(dados$A)-mean(dados$B))
> dif
[1] 1.489526
> 
> dados.AB= as.vector(c(dados$A,dados$B))
> 
> hist(dados.AB, freq=FALSE)
> curve(exp=dnorm(x, mean=mean(dados.AB),sd=sd(dados.AB)), col="red", add=T)
Warning message:
In if (add) lines(x, y, type = type, ...) else plot(x, y, type = type,  :
  a condio tem comprimento > 1 e somente o primeiro elemento ser usado
> 
> mean = mean(dados.AB)
> sd = sd(dados.AB)
> 
> dif.AB = simula(dados$A,dados$B,nsim=2000)
simula uma distribuio nula, no caso de teste unicaudal o primeiro vetor deve ser o dos dados que seriam maiores.
 As opoes de teste so (entre aspas):
         uni (normal unicaudal)
         bi (normal bicaudal) 
         t (distribuio t)

 Diferena absoluta observada entre as mdias das variveis =  1.5 
Houve 50 ou mais avisos (use warnings() para ver os primeiros 50)
> table(dif.AB)
dif.AB
  0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9   1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 
 47  80  85  86  67  88  83  77  70  83  61  69  63  62  52  84  58  53  45  53 
  2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9   3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 
 50  55  28  42  38  47  37  36  35  27  30  15  18  15  20  17   9  17  12   9 
  4 4.1 4.2 4.3 4.4 4.5 4.7 4.8 4.9   5 5.2 5.3 5.4 5.5 5.6 5.8 5.9   6 6.1 6.3 
  6   5   7  10   3   1   7   4   8   5   1   1   5   1   3   1   2   2   1   1 
6.4 6.6 6.9 
  1   1   1 
> 
> n.maior=sum(dif.AB>=dif)
> n.maior
[1] 927
> 
> n.maior/length(dif.AB)
[1] 0.4635


#1.2 - Teste agora que a mdia da segunda amostra  maior que a primeira.

> dif.AB.uni = simula(dados$A,dados$B, teste="uni", nsim=2000)
simula uma distribuio nula, no caso de teste unicaudal o primeiro vetor deve ser o dos dados que seriam maiores.
 As opoes de teste so (entre aspas):
         uni (normal unicaudal)
         bi (normal bicaudal) 
         t (distribuio t)

 Diferena absoluta observada entre as mdias das variveis =  1.5 
Houve 50 ou mais avisos (use warnings() para ver os primeiros 50)
> table(dif.AB.uni)
dif.AB.uni
-7.4 -6.2 -5.7 -5.6 -5.5   -5 -4.9 -4.8 -4.7 -4.6 -4.5 -4.4 -4.3 -4.2 -4.1   -4 
   1    1    1    1    2    2    1    2    5    2    2    3    2    5    1    4 
-3.9 -3.8 -3.7 -3.6 -3.5 -3.4 -3.3 -3.2 -3.1   -3 -2.9 -2.8 -2.7 -2.6 -2.5 -2.4 
   7    5    5    5   14   23   13   10   13   14   15   12   15   10   20   19 
-2.3 -2.2 -2.1   -2 -1.9 -1.8 -1.7 -1.6 -1.5 -1.4 -1.3 -1.2 -1.1   -1 -0.9 -0.8 
  16   25   28   22   29   28   33   29   39   25   30   34   31   27   43   31 
-0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1    0  0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8 
  38   29   50   33   38   38   34   36   45   44   45   41   40   38   45   39 
 0.9    1  1.1  1.2  1.3  1.4  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3  2.4 
  47   27   35   39   24   36   36   36   26   29   20   24   26   21   19   18 
 2.5  2.6  2.7  2.8  2.9    3  3.1  3.2  3.3  3.4  3.5  3.6  3.7  3.8  3.9    4 
  12   16   10   17   16   14    9    7    9    7   11    9   11    3    5    6 
 4.1  4.2  4.3  4.4  4.5  4.6  4.9    5  5.1  5.2  5.4  5.5  5.6  5.8  6.1  6.6 
   4    4    3    5    2    3    3    3    1    1    2    1    1    1    1    1 
 8.6 
   1 
> 
> n.maior=sum(round(dif.AB.uni,1)>=round(dif,1))
> n.menor=sum(round(dif.AB.uni,1)<=round(dif*-1,1))
> n.maior
[1] 454
> n.menor
[1] 484
> 
> (n.maior+n.menor)/length(dif.AB)
[1] 0.469



#1.3 - Utilize agora a funo t.test() para testar as mesmas hipteses. Os resultados so iguais?

> t.test(dados$A,dados$B) 

        Welch Two Sample t-test

data:  dados$A and dados$B 
t = -0.7497, df = 17.93, p-value = 0.4632
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -5.664977  2.685926 
sample estimates:
mean of x mean of y 
 5.665200  7.154726 

#Teste t
t.test(dados$A,dados$B) 

#Teste t na unha

vA=var(dados$A)
vA
vB=var(dados$B)
vB
nA=length(dados$A)
nA
nB=length(dados$B)
nB

sAB=sqrt((vA/nA)+(vB/nB))
sAB
dif
tvalor=dif/sAB
tvalor

res.t= simula(dados$A,dados$B,nsim=2000, teste="t")

maior.menor.t=sum(res.t>=tvalor | res.t<=-tvalor)
maior.menor.t
prob.t=maior.menor.t/length(res.t)
prob.t

## compare com o resultado do teste t da funo t.test()

t.test(dados$A,dados$B)

   
#1.4 - No esquea de fazer um grfico para mostrar os dados

plot(1:20,dados.AB, pch=rep(c(15,16),each=10),col=rep(1:2,each=10))
	for(i in 1:10)
	{
	lines(c(i,i),c(dados.AB[i],mean.A),col=1)
	}
	for(j in 11:20)
	{
	lines(c(j,j),c(dados.AB[j],mean.B),col=2)
	}

lines(c(1,10),c(mean.A,mean.A),col=1)
lines(c(11,20),c(mean.B,mean.B),col=2)



#2. - Utilizando os dados da planilha caixeta.csv

caixeta = read.csv("caixeta.csv")


#2.1 - Calcule os valores de rea basal por fuste

str(caixeta)
head(caixeta)
caixeta$area.b = round(((((caixeta$cap/pi)^2)*pi)/4)*0.01,2)

   
#2.2 - Calcule os valores de rea basal por amostra em cada uma das localidades

str(caixeta$parcela)
levels(caixeta$local)

caixeta.chauas = caixeta[caixeta$local=="chauas",]
caixeta.chauas.AB = tapply(caixeta.chauas$area.b, caixeta.chauas$parcela, sum)
caixeta.jureia = caixeta[caixeta$local=="jureia",]
caixeta.jureia.AB = tapply(caixeta.jureia$area.b, caixeta.jureia$parcela, sum)
caixeta.retiro = caixeta[caixeta$local=="retiro",]
caixeta.retiro.AB = tapply(caixeta.retiro$area.b, caixeta.retiro$parcela, sum)

caixeta.area.b = data.frame(caixeta.chauas.AB,caixeta.jureia.AB,caixeta.retiro.AB)
names(caixeta.area.b) = c("chauas","jureia","retiro")
caixeta.v = as.vector(c(caixeta.area.b$chauas,caixeta.area.b$jureia,caixeta.area.b$retiro))


mean.parcela = as.vector(apply(caixeta.area.b, 2, mean))
mean.var = as.vector(apply(caixeta.area.b, 2, var))

   

#2.3 - Produza grficos para mostrar os dados

plot(1:15,caixeta.v, pch=rep(c(15,16,17),each=5),col=rep(1:3,each=5), ylab= "Area Basal (cm^2)", xlim=c(0,20))
	for(i in 1:5)
	{
	lines(c(i,i),c(caixeta.v[i],mean.parcela[1]),col=1)
	}
	for(j in 6:10)
	{
	lines(c(j,j),c(caixeta.v[j],mean.parcela[2]),col=2)
	}
	for(z in 11:15)
	{
	lines(c(z,z),c(caixeta.v[z],mean.parcela[3]),col=3)
	}

lines(c(1,5),c(mean.parcela[1],mean.parcela[1]),col=1)
lines(c(6,10),c(mean.parcela[2],mean.parcela[2]),col=2)
lines(c(11,15),c(mean.parcela[3],mean.parcela[3]),col=3)


#2.4 - Calcule os valores de uma tabela Anova para esses dados sendo a varivel dependente a rea basal e o tratamento as localidades. Cada observao referece a uma amostra ou parcela.


caixeta.names = as.factor(c(rep("chauas",5),rep("jureia",5),rep("retiro",5)))
caixeta.v
vetor.cor = as.vector(rep(c("red","black","blue"), each=5))
vetor.cor[1]

#Grafico SS Total

plot(caixeta.v, pch=(rep(c(15,16,17),each=5)),col=vetor.cor, ylab="Area Basal", xlab="Observaes")
	for(i in 1:15)
	{
	lines(c(i,i),c(caixeta.v[i],mean(caixeta.v)),col=vetor.cor[i])
	}
	abline(h=mean(caixeta.v))

## Calculo SS TOTAL

media.geral=mean(caixeta.v)
media.geral
dif.geral=caixeta.v-media.geral
dif.geral
sum(dif.geral)
round(sum(dif.geral),10)
ss.caixeta=dif.geral^2
ss.caixeta
ss.total=sum(ss.caixeta)
ss.total

##Somatorio Quadratico Intragrupos

vetor.media=c(rep(mean(caixeta.v[1:5]), each=5),rep(mean(caixeta.v[6:10]), each=5),rep(mean(caixeta.v[11:15]), each=5))

plot(caixeta.v, pch=(rep(c(15,16,17),each=5)),col=vetor.cor, main="Variao Intra Grupos",ylab="Varivel Resposta", xlab="Observaes")
	for(i in 1:15)
	{
	lines(c(i,i),c(vetor.media[i],caixeta.v[i]),col=vetor.cor[i])
	}
	lines(c(1,5),c(vetor.media[1],vetor.media[1]),col=vetor.cor[1])
	lines(c(6,10),c(vetor.media[6],vetor.media[6]),col=vetor.cor[6])
	lines(c(11,15),c(vetor.media[11],vetor.media[11]),col=vetor.cor[11])

caixeta.v
vetor.media
	for (j in 1:5)
	{
	ss.caixeta[j]=(caixeta.v[j]-vetor.media[j])^2
	ss.caixeta[j+5]=(caixeta.v[j+5]-vetor.media[j+5])^2
	ss.caixeta[j+10]=(caixeta.v[j+10]-vetor.media[j+10])^2
	}
	ss.caixeta
ss.intra = sum(ss.caixeta)
ss.intra


#Somatorio da Variacao Quadratica entre grupos

plot(vetor.media,pch=(rep(c(15,16,17),each=5)),col=vetor.cor, main="Variao Entre Grupos",ylab="Varivel Resposta", xlab="Observaes")
		for(i in 1:15)
		{
		lines(c(i,i),c(vetor.media[i],mean(caixeta.v)),col=vetor.cor[i])
		}
	abline(h=mean(vetor.media))
	
#### Clculo dos valores

media.solos=apply(solos,2,mean)
media.solos
media.geral
ss.entre=10*sum((media.solos-media.geral)^2)

	
	ss.entre=c(rep(NA,15))
	for (i in 1:15)
	{
	ss.entre[i]=(vetor.media[i]-mean(caixeta.v))^2
	}
	ss.entre = sum(ss.entre)

ss.total = ss.intra+ss.entre
ss.total


## Calculo de F

gl.total = lenght(caixeta.v)-1
gl.entre = 3-1
gl.intra = gl.total-gl.entre


ms.entre=ss.entre/gl.entre
ms.intra=ss.intra/gl.intra
ms.entre
ms.intra

F.caixeta.dap=ms.entre/ms.intra
F.caixeta.dap

curve(expr=df(x, gl.entre,gl.intra),main="Disribuio F de Fisher", xlab="Valor F",ylab="Densidade",xlim=c(0,10))
abline(v=F.caixeta.dap,col="red")

##Calculo do valor de P

p.caixeta.dap=pf(F.caixeta.dap,gl.entre,gl.intra, lower.tail=FALSE)
p.caixeta.dap

#2.5 - Calcule a tabela de anova com a funo aov().

caixeta.names = factor(c(rep("chauas",5),rep("jureia",5),rep("retiro",5)))

aov(caixeta.v~caixeta.names)

   
#2.6 - Qual  a porcentagem de variao explicada pela localidade nesse caso?

> p.explicada.local = ss.entre/ss.total*100
> p.explicada.local
[1] 34.39258

